package org.infodavid.common.ejb;

import java.rmi.RemoteException;
import java.util.List;

/**
 * The Interface IAuthenticationRemote.
 */
public interface IAuthenticationRemote {

	/**
	 * Adds the group.
	 * @param group the group
	 * @return the long
	 * @throws RemoteException the remote exception
	 */
	long addGroup(IUserGroupRemote group) throws RemoteException;

	/**
	 * Gets the group.
	 * @param identifier the identifier
	 * @return the group
	 * @throws RemoteException the remote exception
	 */
	IUserGroupRemote getGroup(long identifier) throws RemoteException;

	/**
	 * Removes the group.
	 * @param identifier the identifier
	 * @return the i group remote
	 * @throws RemoteException the remote exception
	 */
	IUserGroupRemote removeGroup(long identifier) throws RemoteException;

	/**
	 * List groups.
	 * @param start the start
	 * @param page the page
	 * @return the list< i group remote>
	 * @throws RemoteException the remote exception
	 */
	List<IUserGroupRemote> listGroups(long start, int page) throws RemoteException;

	/**
	 * Update group.
	 * @param group the group
	 * @throws RemoteException the remote exception
	 */
	void updateGroup(IUserGroupRemote group) throws RemoteException;

	/**
	 * Adds the user.
	 * @param group the group
	 * @return the long
	 * @throws RemoteException the remote exception
	 */
	long addUser(IUserRemote group) throws RemoteException;

	/**
	 * Gets the user.
	 * @param identifier the identifier
	 * @return the user
	 * @throws RemoteException the remote exception
	 */
	IUserRemote getUser(long identifier) throws RemoteException;

	/**
	 * Removes the user.
	 * @param identifier the identifier
	 * @return the i user remote
	 * @throws RemoteException the remote exception
	 */
	IUserRemote removeUser(long identifier) throws RemoteException;

	/**
	 * List users.
	 * @param start the start
	 * @param page the page
	 * @return the list< i user remote>
	 * @throws RemoteException the remote exception
	 */
	List<IUserRemote> listUsers(long start, int page) throws RemoteException;

	/**
	 * Update user.
	 * @param group the group
	 * @throws RemoteException the remote exception
	 */
	void updateUser(IUserRemote group) throws RemoteException;
}
